<?php

namespace process;

use app\model\Config;
use Bilulanlv\ThinkCache\facade\ThinkCache;
use support\Log;
use Workerman\Crontab\Crontab;
use yzh52521\EasyHttp\Http;

/**
 * 定时任务
 */
class Task
{
    /**
     * @return void
     */
    public function onWorkerStart(): void
    {
        // 每10秒检查一次微信机器人的服务是否在线
        new Crontab('*/10 * * * * *', function () {
            $this->checkService();
        });
    }

    /**
     * @return void
     */
    private function checkService(): void
    {
        try {
            $result = Http::get(Config::getApiBaseUrl() . '/api/checklogin');
            $result = $result->array();
            $key = 'wxbot_service_error_times';
            if (!isset($result['code']) || $result['code'] != 200 || $result['data']['status'] != 1) {
                $value = ThinkCache::get($key) ?? 1;
                Log::error(date('Y-m-d H:i:s') . '--微信机器人服务离线' . PHP_EOL);
                if ($value >= 3 && $value <= 5) {
                    //发送报警通知
                    send_push_msg('微信机器人状态', '微信机器人服务离线，请检查！');
                }
                ThinkCache::inc($key);
            } else {
                ThinkCache::set($key, 0);
            }
        } catch (\Exception $e) {
            echo $e->getMessage() . PHP_EOL;
        }
    }
}
